package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.MchntAcctInfo;

import java.util.List;

/**
 * 商户结算账户表操作接口类
 * Created by 王成 on 2020/3/2
 */
public interface MchntAcctInfoMapper {
    /**
     * 登记商户结算账户信息
     *
     * @param mchntAcctInfo 商户结算账户信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertMchntAcctInfo(MchntAcctInfo mchntAcctInfo) throws Exception;

    /**
     * 更新商户结算账户信息
     *
     * @param mchntAcctInfo 商户结算账户信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateMchntAcctInfoById(MchntAcctInfo mchntAcctInfo) throws Exception;

    /**
     * 根据非业务主键查询商户结算账户信息
     *
     * @param instId 多法人标识
     * @param id     非业务主键
     * @return 商户结算账户信息
     * @throws Exception 异常
     */
    MchntAcctInfo selectMchntAcctInfoById(String instId, String id) throws Exception;

    /**
     * 根据主键查询商户结算账户信息
     *
     * @param instId       多法人标识
     * @param mchntNo      商户号
     * @param baseProdCode 业务产品代码
     * @param fundType     资金类型
     * @return 商户结算账户信息
     * @throws Exception 异常
     */
    MchntAcctInfo selectMchntAcctInfoByPrimaryKey(String instId, String mchntNo, String baseProdCode, String fundType) throws Exception;

    /**
     * 根据商户号查询商户结算账户信息
     *
     * @param instId  多法人标识
     * @param mchntNo 商户号
     * @return 商户结算账户信息
     * @throws Exception 异常
     */
    List<MchntAcctInfo> selectMchntAcctInfoByMchntNo(String instId, String mchntNo) throws Exception;

    /**
     * 根据结算账号查询商户结算账户信息
     *
     * @param instId 多法人标识
     * @param acctNo 账户
     * @return 商户结算账户信息
     * @throws Exception 异常
     */
    List<MchntAcctInfo> selectMchntAcctInfoByAcctNo(String instId, String acctNo) throws Exception;

    /**
     * 更新商户结算账户信息-签约标识
     *
     * @param mchntAcctInfo 商户结算账户信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateAcctSignFlagById(MchntAcctInfo mchntAcctInfo) throws Exception;

    /**
     * 根据商户号和结算账号查询结算信息列表
     *
     * @param instId  机构号
     * @param mchntNo 商户号
     * @param acctNo  结算账号
     * @return 结算信息列表
     * @throws Exception 异常
     */
    List<MchntAcctInfo> selectMchntAcctInfoByMchntNoAndAcctNo(String instId, String mchntNo, String acctNo) throws Exception;

}
